11 React Router
路由
- 单页应用页面切换;
- 通过 URL 定位到页面;
- 语义的组织资源。
路由实现的基本架构
唯一标识的路由定义,通过 Router 更新到组件容器中。
特性
- 生命是路由定义;
- 动态路由。
实现方式
- URL 路径;
- hash 路由,支持低版本浏览器;
- 内存路由,路由不会反映到浏览器 URL 中。
基于路由配置进行资源组织
- 实现业务逻辑的低耦合;
- 易于扩展、重构和维护;
- 路由层面实现 Lazy Load。
React Router API
<Link>
:普通链接,不会触发浏览器刷新;<NavLink>
:类似 Link,会添加当前选中状态;<Prompt>
:满足条件时提示用户是否离开当前页面;<Redirect>
:重定向当前页面(登录跳转);<Route>
:路由匹配时显示对应组件;<Switch>
:只显示第一个匹配的路由;
通过 URL 传递参数
- 传递参数:
<Route path="topic/:id" ... />
; - 获取参数:this.props.match.params;
- 正则匹配:path-to-regexp。
URL 参数的使用
- 页面状态,URL 发生变化,Router 会使当前页面刷新;
嵌套路由
- 每个 React 组件都可以是路由容器;
- Router 声明式语法可以方便定义嵌套路由;